home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 July / EnigmA AMIGA RUN 09 (1996)(G.R. Edizioni)(IT)[!][issue 1996-07 & 08][EARSAN CD VIII].iso / earcd / util3 / rxlcldts.lha / RexxLocalDates / RLD_Demo.rexx < prev    next >
OS/2 REXX Batch file  |  1996-06-08  |  4KB  |  163 lines

  1. /*
  2.  *  $VER:RLD_Demo.rexx 1.0 (8.6.96)
  3.  *
  4.  *  Demonstration of some of the possibilities with rexxlocaldates.library
  5.  */
  6.  
  7. IF (~SHOW('L','rexxlocaldates.library')) THEN
  8.   CALL ADDLIB('rexxlocaldates.library',0,-30,0)
  9.  
  10. Len_Def_Max = 0
  11. Len_Dan_Max = 0
  12. TestRange_Min = 1
  13. TestRange_Max = 51
  14.  
  15. OPTIONS PROMPT '0a'x || 'Enter to continue =>'
  16.  
  17. Ib = OpenLocale()
  18.   
  19. SAY ''
  20. SAY '  **Localized strings**'
  21. SAY ''
  22.  
  23. DO i = TestRange_Min TO TestRange_Max
  24.   Loc.i.Def = GetLocaleString(Ib,i)
  25.   IF (RC == 5) THEN
  26.      Loc.i.Def = ' **WARN** '
  27.   Loc.i.Def_Len = LENGTH(Loc.i.Def)
  28.   Len_Def_Max = MAX(Loc.i.Def_Len, Len_Def_Max)
  29. END
  30.  
  31.  
  32. Columns = 60 % (Len_Def_Max + 5)
  33.  
  34. DO Out = TestRange_Min TO TestRange_Max BY Columns
  35.   Fmt = ''
  36.   DO In = 0 FOR Columns
  37.     Curr = Out + In
  38.     IF Curr <= TestRange_Max THEN
  39.       Fmt = Fmt || RIGHT(Curr,3,' ') || ': ' || LEFT(Loc.Curr.Def,Len_Def_Max,' ')
  40.   END
  41.   SAY Fmt
  42. END
  43.  
  44. PULL p
  45.  
  46. CALL GetLocaleVars(Ib,LVars)
  47.  
  48. SAY ''
  49. SAY '  **Vars for this Locale**'
  50. SAY ''
  51.  
  52. SAY 'LOCALENAME:      ' || Lvars.LOCALENAME
  53. SAY 'LANGUAGE:        ' || Lvars.LANGUAGE
  54.  
  55. SAY 'DATETIME:        ' || Lvars.DATETIME
  56. SAY 'DATEFORMAT:      ' || Lvars.DATEFORMAT
  57. SAY 'TIMEFORMAT:      ' || Lvars.TIMEFORMAT
  58.  
  59. SAY 'SHORTDATETIME:   ' || Lvars.SHORTDATETIME
  60. SAY 'SHORTDATEFORMAT: ' || Lvars.SHORTDATEFORMAT
  61. SAY 'SHORTTIMEFORMAT: ' || Lvars.SHORTTIMEFORMAT
  62.  
  63. PULL p
  64.  
  65. SAY ''
  66. SAY '  **Current date & time in various formats**'
  67. SAY ''
  68.  
  69. Fmtd.DATETIME        = FormatDate(Ib, ,Lvars.DATETIME)
  70. Fmtd.DATEFORMAT      = FormatDate(Ib, ,Lvars.DATEFORMAT)
  71. Fmtd.TIMEFORMAT      = FormatDate(Ib, ,Lvars.TIMEFORMAT)
  72.  
  73. Fmtd.SHORTDATETIME   = FormatDate(Ib, ,Lvars.SHORTDATETIME)
  74. Fmtd.SHORTDATEFORMAT = FormatDate(Ib, ,Lvars.SHORTDATEFORMAT)
  75. Fmtd.SHORTTIMEFORMAT = FormatDate(Ib, ,Lvars.SHORTTIMEFORMAT)
  76.  
  77.  
  78. SAY 'DATETIME:        '|| LEFT(Lvars.DATETIME,25) || ' = '        || Fmtd.DATETIME       
  79. SAY 'DATEFORMAT:      '|| LEFT(Lvars.DATEFORMAT,25) || ' = '      || Fmtd.DATEFORMAT     
  80. SAY 'TIMEFORMAT:      '|| LEFT(Lvars.TIMEFORMAT,25) || ' = '      || Fmtd.TIMEFORMAT     
  81.                                                                   
  82. SAY 'SHORTDATETIME:   '|| LEFT(Lvars.SHORTDATETIME,25) || ' = '   || Fmtd.SHORTDATETIME  
  83. SAY 'SHORTDATEFORMAT: '|| LEFT(Lvars.SHORTDATEFORMAT,25) || ' = ' || Fmtd.SHORTDATEFORMAT
  84. SAY 'SHORTTIMEFORMAT: '|| LEFT(Lvars.SHORTTIMEFORMAT,25) || ' = ' || Fmtd.SHORTTIMEFORMAT
  85.  
  86. PULL p
  87.  
  88. SAY ''
  89. SAY '  **Formatting a specified date**'
  90. SAY ''
  91. SAY 'Soon.DAYS    = DATE('I') + 7 ( = ' || DATE('I') + 7  || ')'
  92. SAY 'Soon.SECONDS = TIME('S') ( =' || Time('S')  || ')'
  93.  
  94. Soon.DAYS = DATE('I') + 7 
  95. Soon.SECONDS = TIME('S')
  96.  
  97. SAY 'FormatDate (Locale,''Soon'','''||LVars.SHORTDATETIME'''): ' ||,
  98.   FormatDate(Ib, Soon, LVars.SHORTDATETIME )
  99. SAY 'FormatDate (Locale,''Soon'',): ' ||,
  100.   FormatDate(Ib, Soon,)
  101.  
  102. PULL p
  103.  
  104. SAY ''
  105. SAY '  **Parsing a date**'
  106. SAY ''
  107.  
  108. NextWeek = FormatDate(Ib, Soon, LVars.DATETIME)
  109.  
  110. CALL ParseDate(Ib, Parsed, LVars.DATETIME, NextWeek)
  111.  
  112. SAY 'ParseDate(Locale, Parsed, ' || LVars.DATETIME || ', ' || NextWeek || ')'
  113. SAY 'fills Parsed with:'
  114. SAY ''
  115. SAY 'Parsed.DAYS ...... ' || Parsed.DAYS
  116. SAY 'Parsed.SECONDS ... ' || Parsed.SECONDS
  117.  
  118. PULL p
  119.  
  120. SAY ''
  121. SAY '  **Unobvious uses**'
  122. SAY ''
  123.  
  124. Christmas = '24. '|| GetLocaleString(Ib, 26) || ' ' || FormatDate(Ib, , '%Y')
  125.  
  126. SAY ' Christmas this year is: ' || Christmas
  127.  
  128. SAY 'By parsing that date, and subtracting the current day, we can calculate'
  129. SAY 'how long we must wait'
  130.  
  131. CALL ParseDate(Ib, ParsedChristmas, '%e. %B %Y' , Christmas)
  132.  
  133. SAY 'Days to go: ParsedChristmas.DAYS - DATE(I) = ' ||  ParsedChristmas.DAYS - DATE('I')
  134.  
  135. SAY ''
  136. SAY 'Parsing times can be a bit of a hassle, but not anymore:'
  137. SAY 'By using ParseDate(Locale, Time, ''%H:%M:%S'', ''18:42:42''),'
  138. SAY 'we get an result that can be compared with TIME(''S''):'
  139.  
  140. CALL ParseDate(Ib, NewTime, '%H:%M:%S', '18:42:42')
  141. Now = Time('S')
  142.  
  143. SAY ''
  144. SAY 'Current time, in since midnight ' || TIME('S')
  145. SAY '18:42:42 is ' || NewTime.SECONDS || ' seconds after midnight.'
  146. SAY ''
  147.  
  148. IF (Now < NewTime.SECONDS) THEN DO
  149.   TimeDiff.DAYS = 0
  150.   TimeDiff.SECONDS = NewTime.SECONDS - Now
  151. END
  152.  
  153. ELSE DO
  154.   TimeDiff.DAYS = 0
  155.   TimeDiff.SECONDS = Now - NewTime.SECONDS
  156. END
  157.  
  158. SAY 'Interval between current time and 18:42:42 is: ' || FormatDate(Ib, TimeDiff, '%H:%M:%S') 
  159.  
  160. CALL CloseLocale(Ib)
  161.  
  162.  
  163.